<div class="tmd-doc">
<p></p>
<h1 class="tmd-header-1">
Go Optimizations 101 Update History
</h1>
<p></p>
<h3 class="tmd-header-3">
v1.24.a (2024/Dec/16)
</h3>
<p></p>
<ul class="tmd-list">
<li class="tmd-list-item">
<div class="tmd-usual">
The "BCE (Bound Check Elimination)" chapter is modified according Go toolchain go1.24rc1.
</div>
</li>
<li class="tmd-list-item">
<div class="tmd-usual">
In "Stack and Escape Analysis" chapter, some thresholds are modified according Go toolchain go1.24rc1.
</div>
</li>
</ul>
<p></p>
<h3 class="tmd-header-3">
v1.23.a (2024/Oct/16)
</h3>
<p></p>
<ul class="tmd-list">
<li class="tmd-list-item">
<div class="tmd-usual">
The "BCE (Bound Check Elimination)" chapter is modified according <a href="https://github.com/golang/go/issues/40704">https://github.com/golang/go/issues/40704</a>
</div>
</li>
</ul>
<p></p>
<h3 class="tmd-header-3">
v1.22.a (2024/Mar/18)
</h3>
<p></p>
<ul class="tmd-list">
<li class="tmd-list-item">
<div class="tmd-usual">
Go 1.22 changed the semantics of for-loop code blocks. Related articles are modified accordingly.
</div>
</li>
</ul>
<p></p>
<h3 class="tmd-header-3">
v1.21.a (2023/OCT/11)
</h3>
<p></p>
<ul class="tmd-list">
<li class="tmd-list-item">
<div class="tmd-usual">
In "Stack and Escape Analysis" chapter, mentions <code class="tmd-code-span">reflect.ValueOf</code> function calls will not always allocate and escale the values referenced by their arguments.
</div>
</li>
<li class="tmd-list-item">
<div class="tmd-usual">
In "Clear map entries" section of the "Maps" chapter, mentions that Go 1.21 added a new <code class="tmd-code-span">clear</code> builtin function.
</div>
</li>
</ul>
<p></p>
<h3 class="tmd-header-3">
v1.20.a (2023/Feb/01)
</h3>
<p></p>
<ul class="tmd-list">
<li class="tmd-list-item">
<div class="tmd-usual">
In the "Function inlining" section of the "Functions" chapter, mentions containing type delcarations will not prevent a function from being inlined since Go toolchain 1.20. Many examples using local type declaration <code class="tmd-code-span">type _ int</code> are modified accordingly, including the one in the last section ("Grow stack in less times") of the "Stack and Escape Analysis" chapter.
</div>
</li>
<li class="tmd-list-item">
<div class="tmd-usual">
In the "Arrays and Slices" chapter, mentions that <code class="tmd-code-span">copy(s, s)</code> is a no-op, but <code class="tmd-code-span">append(s[:0], s...)</code> is not.
</div>
</li>
<li class="tmd-list-item">
<div class="tmd-usual">
In the "BCE (Bound Check Eliminate)" chapter, mentions that <code class="tmd-code-span">-gcflags="-d=ssa/check_bce"</code> doesn't work for some generic functions.
</div>
</li>
</ul>
<p></p>
<h3 class="tmd-header-3">
v1.19 (2022/Aug/28)
</h3>
<p></p>
<ul class="tmd-list">
<li class="tmd-list-item">
<div class="tmd-usual">
the <code class="tmd-code-span">Garbage Collection</code> chapter is updated much. The update contents are mainly in the last 4 sections (starting the <code class="tmd-code-span">Use new heap memory percentage strategy to control automatic GC frequency</code> section). Some descriptions in the first section <code class="tmd-code-span">GC pacer</code> are also modified a bit.
</div>
</li>
<li class="tmd-list-item">
<div class="tmd-usual">
in the <code class="tmd-code-span">Stack and Escape Analysis</code> chapter, the descriptions about initial stack sizes in the <code class="tmd-code-span">Stacks growth and shrinkage</code> section are modified.
</div>
</li>
<li class="tmd-list-item">
<div class="tmd-usual">
in the <code class="tmd-code-span">BCE</code> chapter, a new <code class="tmd-code-span">Example 4</code> section is added. The example was in the <code class="tmd-code-span">Sometimes, the compiler needs some hints to remove some bound checks</code> section.
</div>
</li>
<li class="tmd-list-item">
<div class="tmd-usual">
in the <code class="tmd-code-span">Functions</code> chapter, the <code class="tmd-code-span">Which functions are inline-able?</code> section states that functions containing <code class="tmd-code-span">select</code> code blocks may be inlined since Go toolchain 1.19.
</div>
</li>
</ul>
<p></p>
<h3 class="tmd-header-3">
v1.17 (2021/Dec/22)
</h3>
<p></p>
<ul class="tmd-list">
<li class="tmd-list-item">
<div class="tmd-usual">
published
</div>
</li>
</ul>
</div>
